package thread;


import sun.nio.cs.ext.MacGreek;

/**
 *
 * 多线程用于并开发执行多个任务
 * 多线程的创建方式有两种
 * 1:继承thread并重写run方法
 *
 */

public class ThreadDemo1 {
    public static void main(String[] args) {
        Thread t1 = new MyThread1();
        Thread t2 = new MyThread2();

        /*
        注意，启动线程要调用start方法 而非直接调用run方法
        当start调用后 线程变纳入到线程调度器中统一管理，当第一次获取时间片时
        线程的run方法会被自动调用




         */



        t1.start();
        t2.start();

    }
}
/**
 * 第一种创建线程的方式优点是结构简单，适合使用匿名内部类型式创建。
 * 缺点：
 * 1：由于java是单继承的，这导致如果继承了Thread就无法再继承其它类了，实际开发中很
 * 不方便
 * 2：定义线程的同时重写了run方法将线程的任务定义在了线程中，导致线程与任务存在一个必然
 * 的耦合关系，不利于线程的重用
 */
class MyThread1 extends Thread{
    public void run(){
        for (int i = 0; i <1000 ; i++) {
            System.out.println("你是谁");
        }
    }
}
class MyThread2 extends Thread{
    public void run(){
        for (int i = 0; i <1000 ; i++) {
            System.out.println("我是查水表的");
        }
    }
}